package h0722;

import java.util.Scanner;

/**
 * @author 不知名帅哥
 * @version 1.0
 * @description 求最长子串的长度。 使用滑动窗口的解法。 只包含一个字母，其余必须是数字。
 * @date 2024/7/22 12:23
 */
public class GetLenMaxSubstring {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s = sc.nextLine();
        sc.close();

        int l=getResult(s);
        System.out.println(l);
    }

    /**
     * 初始化各种变量.
     * 计算字母，数字的个数。更新计数器。
     * 调整窗口找到符合要求的左指针位置; TODO 当窗口内的字母数超过1时，移动 left 边界缩小窗口，直到窗口内只剩一个字母。
     * 然后判断当前的窗口是否满足要求，更新maxLen
     * @param s
     * @return
     */
    private static int getResult(String s) {
        int maxLen=-1;
        int left=0;
        int countLetters=0;
        int countDigits=0;
        int n=s.length();

        for (int right = 0; right < n; right++) {
            char currentChar=s.charAt(right);

            //更新计数器
            if (Character.isLetter(currentChar)){
                countLetters++;
            }else if (Character.isDigit(currentChar)){
                countDigits++;
            }

            //调整窗口，使其满足只包含一个字母
            while (countLetters>1){
                char c = s.charAt(left);
                if (Character.isDigit(c)){
                    countDigits--;
                } else if (Character.isLetter(c)) {
                    countLetters--;
                }
                left++;  //left左移
            }

            //如果当前窗口符合要求，则更新最大长度
            if (countLetters==1&&countDigits>0){
                maxLen=Math.max(maxLen,right-left+1);
            }
        }
        return maxLen;
    }
}
